Software is normally distributed subject to the terms of a license. When software is installed on a computer, it is possible for the software to contain, or to work with, a system that assists in enforcing the terms of the license. An “activation” system is an example of a system that assists with license enforcement. In an activation system, software is distributed with a client-side enforcement component that can cause the software to operate with greater or lesser numbers of its features enabled (or to operate for a limited time, or to operate with some arbitrary set of restrictions). (Software with the greater number of features enabled can be said to operate in “full-featured” mode, while the same software with the lesser number of features enabled can be said to operate in “limited” mode.) For a user to be permitted to use the greater number of features, it is normally necessary for a user to activate the software, and the activation process is designed to detect when a given copy of the software has been installed on a greater number of machines than the license permits (and/or to perform other tests to determine whether a given copy of the software is legitimate). When the activation process detects that the software has been installed on a greater number of machines than the license permits (or whether the circumstances surrounding the activation otherwise suggest that the installation being activated is not legitimate), activation will be denied, and the client-side enforcement component will cause the software to run with only a limited set of features enabled, or may disable use of the software entirely.
As can be appreciated by the limitations of the conventional activation systems, activation systems are most effective at enforcing licensing terms when the term that is being enforced is a simple limit on the number of machines on which a given piece of software can be installed, and where the software is sold directly to the user. However, it would be beneficial in an enterprise licensing situation—where an organization has purchased the right to install software on a certain number of machines—to enforce the condition that the software be installed on machines that are legitimately part of the organization. Additionally, it would be beneficial that when machines are not longer in use, or their owners have left the organization, to revoke usage of the software that has been installed on these machines. Therefore, based upon the limitations of the conventional activation systems, it is desirable for an enforcement component to be able to support these usage scenarios.